package br.edu.fucapi.pos.control.mb;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import br.edu.fucapi.pos.model.bean.ItemPrestacaoContas;
import br.edu.fucapi.pos.model.bean.Balancete;
import br.edu.fucapi.pos.model.bean.Lancamento;
import br.edu.fucapi.pos.model.dao.DAO;

@ManagedBean
@ViewScoped
public class BalanceteBean {
	private ItemPrestacaoContas itemPrestacaoContas = new ItemPrestacaoContas();
	private Balancete balancete = new Balancete();
	private Integer idLancamento;

	public void adicionar() {
		DAO<Balancete> balanceteDAO = new DAO<Balancete>(Balancete.class);
		DAO<ItemPrestacaoContas> itemDAO = new DAO<ItemPrestacaoContas>(ItemPrestacaoContas.class);
		//Persistencia do balancete
		balanceteDAO.adiciona(balancete);
		//Persistencia dos itens do balancete
		for (ItemPrestacaoContas itemPrestacaoContas : balancete.getItens()) {
			itemDAO.adiciona(itemPrestacaoContas);
		}

		this.balancete = new Balancete();
	}
	
	/** 
	 * Metodo que adiciona um lancamento ao balancete
	 */
	public void adicionarItem() {
		DAO<Lancamento> dao = new DAO<Lancamento>(Lancamento.class);
		//Carregando dados do produto
		Lancamento lancamento = dao.buscaPorId(idLancamento);
		itemPrestacaoContas.setLancamento(lancamento);
		itemPrestacaoContas.setValor(lancamento.getValor());
		
		//Mapeamento bidirecional
		itemPrestacaoContas.setBalancete(balancete);
		balancete.adicionarItem(itemPrestacaoContas);
		
		itemPrestacaoContas = new ItemPrestacaoContas();
	}

	//Metodos de get e set
	public Integer getIdLancamento() {
		return idLancamento;
	}
	public void setIdLancamento(Integer idLancamento) {
		this.idLancamento = idLancamento;
	}
	public ItemPrestacaoContas getItemPrestacaoContas() {
		return itemPrestacaoContas;
	}
	public Balancete getBalancete() {
		return balancete;
	}
}
